package com.lz.autotest.project.testmanage.infmanage.mapper;

import com.lz.autotest.project.testmanage.infmanage.domain.SstInf;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 部门管理 数据层
 *
 * @author lz
 */
public interface InfManageMapper {
    /**
     * 查询部门管理数据
     *
     * @param sstInf 部门信息
     * @return 部门信息集合
     */
    public List<SstInf> selectSstInfList(SstInf sstInf);

    /**
     * 接口管理搜索框,匹配名字和url
     */
    public List<SstInf> selectSstInfListByCondition(SstInf sstInf);

    public List<Map<String, Object>> queryInfAll(SstInf sstInf);

    public List<Map<String, Object>> querySstInfAllList(Map map);

    /**
     * 根据部门ID查询信息
     *
     * @param deptId 部门ID
     * @return 部门信息
     */
    public SstInf selectSstInfById(String infId);

    /**
     * 根据ID查询所有子部门
     *
     * @param deptId 部门ID
     * @return 部门列表
     */
    public List<SstInf> selectChildrenSstInfById(String infId);

    /**
     * 根据ID查询所有子部门（正常状态）
     *
     * @param deptId 部门ID
     * @return 子部门数
     */
    public int selectNormalChildrenSstInfById(String infId);

    /**
     * 是否存在子节点
     *
     * @param deptId 部门ID
     * @return 结果
     */
    public int hasChildBySstInfId(String infId);


    /**
     * 校验部门名称是否唯一
     *
     * @param deptName 部门名称
     * @param parentId 父部门ID
     * @return 结果
     */
    public SstInf checkSstInfNameUnique(@Param("infName") String infName, @Param("parentId") String parentId);

    /**
     * 校验部门编码是否唯一
     *
     * @param deptCode 编码
     * @param parentId 父部门ID
     * @return 结果
     */
    public SstInf checkSstInfCodeUnique(@Param("infCode") String infCode, @Param("parentId") String parentId);

    /**
     * 新增部门信息
     *
     * @param dept 部门信息
     * @return 结果
     */
    public int insertSstInf(SstInf sstInf);

    /**
     * 修改部门信息
     *
     * @param dept 部门信息
     * @return 结果
     */
    public int updateSstInf(SstInf sstInf);

    /**
     * 修改所在部门正常状态
     *
     * @param deptIds 部门ID组
     */
    public void updateSstInfStatusNormal(String[] infIds);

    /**
     * 修改子元素关系
     *
     * @param depts 子元素
     * @return 结果
     */
    public int updateSstInfChildren(@Param("infs") List<SstInf> infs);

    /**
     * 删除部门管理信息
     *
     * @param infId 部门ID
     * @return 结果
     */
    public int deleteSstInfById(String infId);

    /**
     * 根据主键 id 查询接口
     *
     * @param param 请求参数
     * @return 结果
     */
    public List<SstInf> getMenuDetail(Map<String, Object> param);

    void updateAllInFAuth(Map<String, Object> param);

    Map<String,String> countInf();

    List<SstInf> childrenList(String infId);

    List<SstInf> selectInfListByIds(List<String> list);
}
